package com.CST.service.ys;

import com.CST.dto.ys.NumAndYardDTO;
import com.CST.dto.ys.YsBusinessBudgetDTO;
import com.CST.entity.ys.YsAccountDetail;
import com.CST.vo.ys.YsAccountDetailBusinessOrManageVO;
import com.CST.vo.ys.YsBusinessAccountVO;
import com.CST.vo.ys.YsModifyRecordVO;
import com.github.pagehelper.PageInfo;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *  业务预算执行管理服务类
 *
 * @author cw
 * @since 2023-04-20
 */
public interface YsBusinessBudgetService {

    /**
     * 业务预算列表
     * @param ysBusinessBudgetDto 查询条件
     * @return result
     */
    YsBusinessAccountVO getBusinessBudgetInfo(YsBusinessBudgetDTO ysBusinessBudgetDto);

    /**
     * 新增
     * @param ysAccountDetail 新增数据
     * @return result
     */
    Boolean insertBusinessBudget(YsAccountDetail ysAccountDetail);

    /**
     * 回显
     * @param id id
     * @return 结果
     */
    YsAccountDetailBusinessOrManageVO selectInfoByNum(Integer id);

    /**
     * 更新业务凭证
     * @param ysAccountDetail 编辑数据
     * @return result
     */
    Integer updateBusinessAccountByNum(YsAccountDetail ysAccountDetail, HttpServletRequest request);

    /**
     * 删除
     * @param id id
     * @return 结果
     */
    Boolean deleteByNum(Integer id);

    /**
     * 发布
     * @param ysBusinessBudgetDto 查询条件
     * @return result
     */
    Boolean releaseData(YsBusinessBudgetDTO ysBusinessBudgetDto);

    /**
     * 导出业务预算数据列表
     * @param response response
     * @param dto 查询条件
     */
    void exportExcelYsBusinessBudget(HttpServletResponse response, YsBusinessBudgetDTO dto);

    /**
     * 获取修订记录列表
     * @param ysBusinessBudgetDto 查询条件
     * @return 修订记录列表
     */
    PageInfo<YsModifyRecordVO> getModifyRecordList(YsBusinessBudgetDTO ysBusinessBudgetDto);

    /**
     * 撤销
     * @param dto id传自己的id
     * @return 结果
     */
    Boolean revokeRecord(NumAndYardDTO dto);
}
